#爬取博客园
import pprint
from lxml import etree
import requests
from pymongo import MongoClient
header={
    'User-Agent': 'Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 87.0.4280.141Safari / 537.36',
    'referer': 'https://www.cnblogs.com/',
}
#链接Mongodb
##连接数据库
client=MongoClient()
#创建数据库
database=client['Blog']
#创建集合
db=database['blog_content']

#分析html代码
# 构建url
save_all=[]
for i in range(1,10):
    url='https://www.cnblogs.com/sitehome/p/{}'.format(str(i))
    print(url)
    result=requests.get(url,headers=header)
    html = etree.HTML(result.text)
    #获取网址的链接，以及标题、作者主页链接、作者昵称
    all=html.xpath('//div[@class="post-item-text"]')
    #获取标题
    title=html.xpath('//div[@class="post-item-text"]/a/text()')
    #文章链接
    link_title=[html.xpath('//div[@class="post-item-text"]/a')[i].get('href') for i in range(len(all))]
    #昵称
    name=html.xpath('//footer[@class="post-item-foot"]/a[1]/span/text()')
    #时间
    time=html.xpath('//footer[@class="post-item-foot"]/span/span/text()')
    #主页链接
    name_link=[html.xpath('//footer[@class="post-item-foot"]/a[1]')[i].get('href') for i in range(len(all))]


    #一一对应
    for a,b,c,d,e in zip(title,link_title,name,time,name_link):
        data={}
        data['昵称']=c.strip()
        data['主页链接']=e
        data['标题']=a.strip()
        data['标题链接']=b.strip()
        data['发布时间']=d.strip()
        save_all.append(data)
    # pprint.pprint(save_all)

#保存到mongodb数据库当中
db.insert_many(save_all)